#include <stdio.h>
#include <windows.h>

// void test()
// {
//     printf("hello world\n");
//     Sleep(1000);
//     test(); // 卡死test函数里面了，永远不会停止，栈崩溃
// }

// 需要有终止条件

void test(int n)
{
    if (n <= 0)
    {
        return;
    }
    printf("递归过程 %d\n", n);
    // n--;
    test(n - 1);
    printf("递归过程 %d\n", n);
}

// 递归n+(n-1)+....+1
int addNumToOne(int num)
{
    if (num == 1)
    {
        return 1;
    }
    return addNumToOne(num - 1);
}

//  斐波那契数列  F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2)（n ≥ 2）
int f(int n)
{
    if (n < 2)
        return n;
    return f(n - 1) + f(n - 2);
}

// 使用递归实现十进制转二进制
int TenToTwo(int num)
{
    if (num / 2 == 0)
    {
        printf("%d", num % 2);
        return 0;
    }
    TenToTwo(num / 2);

    printf("%d", num % 2);
}

// 杨辉三角
// 递归实现 求和 阶乘  斐波那契数列 （死记硬背）       递归实现10进制转2进制（短除法）
int main()
{
    // test(5);
    printf("%d\n", addNumToOne(4));
    printf("%d\n", f(4));
    TenToTwo(10);
    return 0;
}